package modelo.entidad;

import java.io.Serializable;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

import org.hibernate.annotations.IndexColumn;

import java.util.Date;
import java.util.List;

@Entity
@Table(name="publicacion",schema="public")
public class Publicacion implements Serializable {
	
	private static final long serialVersionUID = 1L;
	
	@Id
	@Column(name="id")
	private int id;
	
	@ManyToOne
	@JoinColumn(name="emailusuario")
	private Usuario usuario;
	
	@Column(name="fecha")
	private Date fecha;
	
	@Column(name="nrodias")
	private int nrodias;
	
	@Column(name="precio")
	private double precio;
	
	@Column(name="estado")
	private String estado;
	
	@Column(name="estatus")
	private String estatus;
	
	@Column(name="imagen")
	private String imagen;
	
	@ManyToOne
    @JoinColumn(name="id_tipopublicacion")
	private Tipopublicacion tipopublicacion;	

    @OneToMany(cascade= CascadeType.ALL, fetch=FetchType.EAGER)
    @JoinColumn(name="id_publicacion")
    @IndexColumn(name="idx")
	private List<Pago> pagos;
	
	@OneToOne(cascade=CascadeType.ALL)
	@PrimaryKeyJoinColumn
	private Vehiculo vehiculo;

	public Publicacion() {

	}

	public Publicacion(int id,Usuario usuario, Date fecha, int nrodias,
			double precio, String estado, String estatus, String imagen,
			Tipopublicacion tipopublicacion) {
		super();
		this.id = id;
		this.usuario = usuario;
		this.fecha = fecha;
		this.nrodias = nrodias;
		this.precio = precio;
		this.estado = estado;
		this.estatus = estatus;
		this.imagen = imagen;
		this.tipopublicacion = tipopublicacion;
	}

	public static long getSerialversionuid() {
		return serialVersionUID;
	}

	public int getId() {
		return id;
	}

	public Date getFecha() {
		return fecha;
	}

	public int getNrodias() {
		return nrodias;
	}

	public double getPrecio() {
		return precio;
	}

	public String getEstado() {
		return estado;
	}

	public String getEstatus() {
		return estatus;
	}

	public Tipopublicacion getTipopublicacion() {
		return tipopublicacion;
	}

	public List<Pago> getPagos() {
		return pagos;
	}

	public Vehiculo getVehiculo() {
		return vehiculo;
	}

	public void setId(int id) {
		this.id = id;
	}

	public void setFecha(Date fecha) {
		this.fecha = fecha;
	}

	public void setNrodias(int nrodias) {
		this.nrodias = nrodias;
	}

	public void setPrecio(double precio) {
		this.precio = precio;
	}

	public void setEstado(String estado) {
		this.estado = estado;
	}

	public void setEstatus(String estatus) {
		this.estatus = estatus;
	}

	public void setTipopublicacion(Tipopublicacion tipopublicacion) {
		this.tipopublicacion = tipopublicacion;
	}

	public void setPagos(List<Pago> pagos) {
		this.pagos = pagos;
	}

	public void setVehiculo(Vehiculo vehiculo) {
		this.vehiculo = vehiculo;
	}

	public String getImagen() {
		return imagen;
	}

	public void setImagen(String imagen) {
		this.imagen = imagen;
	}
	
	
	
}
